package org.jeecg.modules.sczt.service.Impl;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.sczt.entity.Sczt;
import org.jeecg.modules.sczt.mapper.ScztMapper;
import org.jeecg.modules.sczt.service.IScztService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


/**
 * 书签服务实现类
 *
 * @author: scott
 * @date: 2022年05月12日 4:37 下午
 */
@Slf4j
@Service
@DS("pg")
public class ScztServiceImpl extends ServiceImpl<ScztMapper, Sczt> implements IScztService {

    @Autowired
    private ScztMapper scztMapper;


    @Override
    public Sczt geScztByShxydm(String shxydm) {
        return scztMapper.getScztByShxydm(shxydm);
    }

    /**
     * 获取所有企业列表
     *
     * @return List<Sczt>
     */
    @Override
    public List<Sczt> listAll() {
        return scztMapper.listAll();
    }

    @Override
    public JSONObject list(Number pageNum, Number pageSize,String nsrmc) {
        // 1、获取市场主体数量
        int scztCount= scztMapper.countSczt(nsrmc);
        // 2、获取市场主体list
        List<Sczt> list = scztMapper.list(pageNum,pageSize,nsrmc);
        // 3、获取对应市场主体的GeoJSON数据
        List<Map> features = scztMapper.getScztGeoJson(pageNum,pageSize,nsrmc);
        List features2=new ArrayList();

        for (int i = 0; i < features.size(); i++) {
            features2.add(JSONObject.parse(features.get(i).get("st_asgeojson").toString()));
        }
        JSONObject featureCollection= new JSONObject();
                featureCollection.put("type","FeatureCollection");
                featureCollection.put("features",features2);

        JSONObject jsonObject=new JSONObject();

        jsonObject.put("total",scztCount);
        jsonObject.put("list",list);
        jsonObject.put("geojson",featureCollection);

        return jsonObject;
    }

    /**
     * 更新市场主体信息
     *
     * @param sczt
     */
    @Override
    public Boolean updateSczt(Sczt sczt) {
        // 1、更新市场主体位置信息
        String shxydm = sczt.getShxydm();
        double lng=sczt.getLng();
        double lat=sczt.getLat();
        scztMapper.updateScztGeom(shxydm,lng,lat);
        // 2、更新市场主体的属性信息【按ID】
        return this.updateById(sczt);
    }

    @Override
    public List<Map> getScztByPolygon(String polygon) {
        return scztMapper.getScztByPolygon(polygon);
    }

    /**
     * 根据功能区名称、主体类型【必填】、排行数查询企业注册资本Top前列企业
     *
     * @param gnqmc
     * @param ztlx
     * @param pm
     * @return
     */
    @Override
    public List<Map> getQyZczbTopN(String gnqmc, String ztlx, int pm) {
        return scztMapper.getQyZczbTopN(gnqmc,ztlx,pm);
    }

    /**
     * 根据功能区名称，主体类型【可选】获取注册时长主体企业数量
     *
     * @param gnqmc
     * @param ztlx
     * @return
     */
    @Override
    public List<Map> getZcScztQysl(String gnqmc) {
        return scztMapper.getZcScztQysl(gnqmc);
    }
}
